---
id: 655771d889132f9ccd341060
title: Крок 15
challengeType: 20
dashedName: step-15
---

# --description--

Граф називається *зваженим*, якщо його ребра пов’язані з вагою, яка представляє відстань, час або інше кількісне значення.

У цьому випадку вагою буде відстань між вузлами або точками в просторі. Щоб представити зважений граф, можна змінити словник, використовуючи список кортежів для кожного значення.

Першим елементом в кортежі буде приєднаний вузол, а другим елементом буде ціле число, яке вказує відстань.

Змініть `my_graph["A"]` на список кортежів, враховуючи такі відстані:

| Ребро | Вага |
| ----- | ---- |
| A-B   | 3    |
| B-C   | 4    |
| C-D   | 7    |
| D-A   | 1    |

# --hints--

Словник повинен мати 4 ключі під назвами `A`, `B`, `C` та `D`.

```js
({ test: () => assert(__pyodide.runPython(`
    graph = __locals.get("my_graph")
    key_list = ["A", "B", "C", "D"]
    len(graph) == 4 and all(key in graph for key in key_list)
  `))
})
```

`my_graph["A"]` має бути списком кортежів.

```js
({ test: () => assert(__pyodide.runPython(`
    graph = __locals.get("my_graph")
    type(graph["A"]) is list and all(type(i) is tuple for i in graph["A"])
  `))
})
```

`my_graph["A"]` має бути списком кортежів, де першим елементом кортежу є приєднаний вузол, а другим — відстань.

```js
({ test: () => assert(__pyodide.runPython(`
    graph = __locals.get("my_graph")
    tuples = [("B", 3), ("D", 1)]
    len(graph["A"]) == 2 and all(t in graph["A"] for t in tuples)
  `))
})
```

# --seed--

## --seed-contents--

```py
--fcc-editable-region--
my_graph = {
    'A': ['B', 'D'],
--fcc-editable-region--    
    'B': ['A', 'C'],
    'C': ['B', 'D'],
    'D': ['A', 'C']
}

```
